﻿#include "containertype.h"
#include<QList>
#include<iostream> //cout 输入输出
#include<QDebug>
using namespace std;

//1、QList
//insert()、replace()、removeAt()、move()、swap()、append()、prepend()、removeFirst()
//和 removeLast()等。
//QList提供下标索引方式访问数据项，如同数组一样，也提供at()函数
void containertype1::qlist()
{
	QList<QString> list;
	list << "insim" << "eclipse" << "cmg";

	/*********************************************************************************/
	////1、insertj()插入数据
	//QString string = "insim2";
	//list.insert(1,string);					//insert有两个重载函数，这个是第二个
	////list.insert(list,);						//第一个插入函数后面在熟悉

	/*********************************************************************************/
	////2、replace()替换
	//QString string2 = "cmg2";
	//list.replace(1, string2);					//第一个参数为位置，后面为替换的字符

	/*********************************************************************************/
	////3、removeAt()去除元素	
	//list.removeAt(1);							//只有一个位置参数，int

	/*********************************************************************************/
	////4、move()移动元素
	//list.move(1, 2);							//移动函数，(int from,int to)形参，把1的元素移动到2

	/*********************************************************************************/
	////5、swap()交换函数						//有两个重载函数
	//list.swap(1,0);							//将1位置的元素与0位置元素交换,作用类似move
	//for (int i = 0; i < list.size(); i++)
	//{
	//	qDebug() << list[i];
	//}
	//QList<QString> list2;
	//list2 << "1" << "@" << "3";
	//list.swap(list2);							//将两个列表交换

	/*********************************************************************************/
	////6、append()末尾追加						//两个重载函数
	//list.append("123");						//一个在末尾追加新元素
	//list.append(list2);						//一个在末尾追加QList新列表元素

	/*********************************************************************************/
	////7、prepend()在容器头部插入数据
	//list.prepend("456");		

	/*********************************************************************************/
	////8、removeFirst()去除头部数据
	//list.removeFirst();

	/*********************************************************************************/
	////9、removeLast()去除末尾数据
	//list.removeLast();

	/*********************************************************************************/
	////10、根据索引获取数据项 例如list[1],还可以如下
	//QString string = list.at(0);
	//qDebug()<<string;

	/*********************************************************************************/
	////11、clear()清空表
	//list.clear();

	/*********************************************************************************/
	////12、contains()查看是否包含指定内容
	//bool getbool = list.contains("cmg");
	//qDebug() << getbool;

	/*********************************************************************************/
	//13、begin const_iterator begin() const	//指向队头迭代器，STL风格
	//const_iterator cbegin() const				//指向队头迭代器，STL风格
	//const_iterator cend() const				//指向队尾假想元素迭代器，STL风格
	for (list.begin();;)
	{
		if (list.size() >= 0)
		{
			list.removeFirst();
		}
		qDebug() << 1;							//打印三次后报错，list.begin()队头没有元素了
		//if (list.begin() == NULL)
		//{
		//	break;
		//}
	}



	//14、isEmpty()空列表返回 true，有元素就返回 false

	for (int i = 0; i < list.size(); i++)
	{
		qDebug() << list[i];
	}

}
